#include <iostream>
#include <cstring>
#include <string>

using namespace std;

int main()
{
    char ca[] = {'C', '+', '+'};    // 不以空字符结束
    cout << strlen(ca) << endl;     // 严重错误：ca 没有以空字符结束
                                    // 程序将产生未定义的结果

    const char ca1[] = "A string example";
    const char ca2[] = "A different string";
    // if (ca1 < ca2)               // 未定义的：试图比较两个无关地址
    if (strcmp(ca1, ca2) < 0) {}    // 和两个 string 对象的比较 s1 < s2 效果一样

    char largeStr[40];
    // 如果我们计算错了 largeStr 的大小将引发严重错误
    strcpy(largeStr, ca1);          // 把 ca1 拷贝给 largeStr
    strcat(largeStr, " ");          // 在 largeStr 的末尾加上一个空格
    strcat(largeStr, ca2);          // 把 ca2 连接到 largeStr 后面
    printf("%s", largeStr);

    string s("Hello World");        // s 的内容是 Hello World
    // char *str = s;               // 错误：不能用 string 对象初始化 char*
    const char *str = s.c_str();    // 正确
}